www.gusucode.com > matlab编程用户界面的卡尔曼滤波程序源码 > matlab编程用户界面的卡尔曼滤波程序源码/Kalman filter_GUI/m_files/input_callback.m
function input_callback() %%%%%%%%%%%%%%%%%%%%% % defaut parameters % %%%%%%%%%%%%%%%%%%%%% A=[1 0 0 1]; %Φ(k+1,k) B=[.1 .3 .2 .2]; %Γ(k+1,k) H=[.1 2 .3 .4]; %H(k) Q=[.2 .1 .1 .4]; %Q(k) R=[.1 .05 .05 .1]; %R(k) P0=[.1 0 0 .4]; %P(0) X0=[0 0]'; %X(0,0) %%%%%%%%%%%%%% % inpudialog % %%%%%%%%%%%%%% prompt={'Φ(k+1,k):(n×n)','Γ(k+1,k):(n×p)','H(k):(m×n)','Q(k):(p×p)','R(k):(m×m)',... 'P(0):(n×n)','X(0,0):(n×1)'}; title='Input Parameters'; lines=[2 2 2 2 2 2 2]; def={num2str(A),num2str(B),num2str(H),num2str(Q),num2str(R),num2str(P0),... num2str(X0)}; answer=inputdlg(prompt,title,lines,def); if isempty(answer) return end %%%%%%%%%%%%%%%%%%% % save parameters % %%%%%%%%%%%%%%%%%%% exist=0; if ~isempty(answer{1}) A=str2num(answer{1}); if exist save inidata A -append; else save inidata A; exist=1; end end if ~isempty(answer{2}) B=str2num(answer{2}); if exist save inidata B -append; else save inidata B; exist=1; end end if ~isempty(answer{3}) H=str2num(answer{3}); if exist save inidata H -append; else save inidata H; exist=1; end end if ~isempty(answer{4}) Q=str2num(answer{4}); if exist save inidata Q -append; else save inidata Q; exist=1; end end if ~isempty(answer{5}) R=str2num(answer{5}); if exist save inidata R -append; else save inidata R; exist=1; end end if ~isempty(answer{6}) P0=str2num(answer{6}); if exist save inidata P0 -append; else save inidata P0; exist=1; end end if ~isempty(answer{7}) X0=str2num(answer{7}); if exist save inidata X0 -append; else save inidata X0; exist=1; end end CI=findobj(gcf,'tag','compo1'); set(CI,'userdata',[]); generatezk;